"""
算法题: 给定一个非负整数， 你至多可以交换一次数字中的任意两位。返回你能得到的最大值。
解题思想：将数字转化成列表，从列表第一个元素开始判断是不是所有位中最大的数字，不是则与最大的数字位进行交换并返回交换结果，如果是，则把游标往后移并进行递归判断
"""

def exchange(num_list, cursor):
    # 跳出递归的条件
    if cursor == len(num_list) -1:
        return
    
    # 如果游标所处位置就是游标之后部分的最大值，那么继续递归
    if num_list[cursor] == max(num_list[cursor:]):
        return exchange(num_list, cursor + 1)
    else:
        # 求游标之后列表部分的最大值
        max_digit = max(num_list[cursor:])
        # 获取该部分最大值的下标
        index_of_max = num_list[cursor:].index(max_digit) + cursor
        # 交换元素
        num_list[index_of_max] = num_list[cursor]
        num_list[cursor] = max_digit
        return num_list


def get_num_list():
    origin_num_list = []
    num_str = input("请输入一个正整数")
    for digit in num_str:
        origin_num_list.append(int(digit))
    return origin_num_list
    

def output_new_int(num_list):
    new_num_str = ""
    for digit in num_list:   
        new_num_str += str(digit)
    return new_num_str

origin_num_list = get_num_list()
num_list = exchange(origin_num_list, 0)

# 如果num_list为None，说明没有进行交换，说明原来的数字就是最大的
if not num_list:
    new_num_str = ""
    for i in origin_num_list:
        new_num_str += str(i)
else:
    new_num_str = output_new_int(num_list)
print(new_num_str)



